//入口函数
$(function () {
    let layer = layui.layer
    //需求1，初始化文章分类列表
    //因为修改 删除等标签都需要重新渲染页面，我们封装一个函数进行渲染
    //调用函数
    initArtCateList()
    //需求1，获取文章列表，渲染到页面上
    function initArtCateList() {
        //发送AJAX
        axios({
            method: 'GET',
            url: '/my/article/cates'
        }).then(({ data: res }) => {
            console.log(res);
            if (res.status !== 0) {
                return layer.mag(res.message)
            }
            //成功后直接渲染
            let arr = []
            res.data.forEach((ele) => {
                if (ele.Id < 0) return
                arr.push(` <tr>
                        <td>${ele.Id}</td>
                        <td>${ele.name}</td>
                        <td>${ele.alias}</td>
                        <td>
                            <button data-id="${ele.Id}" class="btn-edit layui-btn layui-btn-xs">编辑</button>
                            <button data-id='${ele.Id}' class="del-edit layui-btn layui-btn-xs layui-btn-danger">删除</button>
                        </td>
                    </tr>`)
            })
            //循环完成 进行页面渲染
            $('tbody').empty().html(arr.join(''))
        })
    }
    //需求2，点击添加分类，弹出层
    //定义一个全局变量，接收open的值，用来关闭弹出框
    let indexAdd = 0
    $('#addBtn').on('click', function () {
        indexAdd = layer.open({
            type: 1,
            title: '添加文章类别',
            area: ['500px', '260px'],
            //将来content里面要放form表单，所以放在末尾
            content: `  
            <form id="addForm" class="layui-form" action="">
                <!-- 分类名称 -->
                <div class="layui-form-item">
                    <label class="layui-form-label">分类名称</label>
                    <div class="layui-input-block">
                        <input type="text" name="name" required lay-verify="required" placeholder="请输入分类名称"
                            autocomplete="off" class="layui-input">
                    </div>
                </div>
                <!-- 2，分类别名 -->
                <div class="layui-form-item">
                    <label class="layui-form-label">分类别名</label>
                    <div class="layui-input-block">
                        <input type="text" name="alias" required lay-verify="required" placeholder="请输入分类别名"
                            autocomplete="off" class="layui-input">
                    </div>
                </div>
                <!-- 3，按钮 -->
                <div class="layui-form-item">
                    <div class="layui-input-block">
                        <button class="layui-btn" lay-submit lay-filter="formDemo">立即提交</button>
                        <button type="reset" class="layui-btn layui-btn-primary">重置</button>
                    </div>
                </div>
            </form>`
        });
    })

    //需求3，添加文章分类-后添加的动态元素，需要使用事件委托
    $('body').on('submit', '#addForm', function (e) {
        e.preventDefault()
        //发送AJAX
        axios({
            method: 'POST',
            url: '/my/article/addcates',
            data: $(this).serialize()
        }).then(({ data: res }) => {
            console.log(res);
            if (res.status !== 0) {
                return layer.msg(res.message)
            }
            layer.msg('恭喜您，添加图书列表成功！')
            initArtCateList()
            //关闭弹出层
            layer.close(indexAdd)
        })
    })
    //需求4，点击编辑  弹出层修改
    //因为编辑按钮是动态添加的。需要用到事件委托
    //用一个全局去接收修改的open的值
    let indexEdit = 0
    $('tbody').on('click', '.btn-edit', function () {
        //点击后做2个事情，1，弹出层
        indexEdit = layer.open({
            type: 1,
            title: '修改文章类别',
            area: ['500px', '260px'],
            //将来content里面要放form表单，所以放在末尾
            content: `  
            <form id="editForm" class="layui-form" lay-filter="editForm">
                 <!-- 隐藏域，填充Id值，将来修改数据的时候使用 -->
                        <input type="hidden" name="Id">
                <!-- 分类名称 -->
                <div class="layui-form-item">
                    <label class="layui-form-label">分类名称</label>
                    <div class="layui-input-block">
                        <input type="text" name="name" required lay-verify="required" placeholder="请输入分类名称"
                            autocomplete="off" class="layui-input">
                    </div>
                </div>
                <!-- 2，分类别名 -->
                <div class="layui-form-item">
                    <label class="layui-form-label">分类别名</label>
                    <div class="layui-input-block">
                        <input type="text" name="alias" required lay-verify="required" placeholder="请输入分类别名"
                            autocomplete="off" class="layui-input">
                    </div>
                </div>
                <!-- 3，按钮 -->
                <div class="layui-form-item">
                    <div class="layui-input-block">
                        <button class="layui-btn" lay-submit lay-filter="formDemo">确认修改</button>
                    </div>
                </div>
            </form>`
        });
        //2，赋值
        //(获取数据，和渲染数据，要写到btn-edit事件里面)
        let id = $(this).attr('data-id')
        // console.log(id);
        //发送AJAX
        axios({
            method: 'GET',
            url: "/my/article/cates/" + id,
        }).then(({ data: res }) => {
            console.log(res);
            if (res.status !== 0) {
                return layer.msg(res.message)
            }
            //成功后渲染，layui。form。val（）
            layui.form.val('editForm', res.data)
        })
    })

    //需求5，修改文章分类-也需要事件委托
    $('body').on('submit', '#editForm', function (e) {
        e.preventDefault()
        //修改分类 发送axios
        axios({
            method: 'POST',
            url: '/my/article/updatecate',
            data: $(this).serialize()
        }).then(({ data: res }) => {
            console.log(res);
            if (res.status !== 0) {
                return layer.msg(res.message)
            }
            layer.msg('恭喜您，修改图书类型成功！')
            initArtCateList()
            layer.close(indexEdit)
        })
    })

    //需求6：删除
    $('tbody').on('click', '.del-edit', function () {
        let id = $(this).attr('data-id')
        //弹窗
        layer.confirm('确定要删除吗?', { icon: 3, title: '提示' }, function (index) {
            //发送ajax
            axios({
                url: '/my/article/deletecate/' + id
            }).then(({ data: res }) => {
                console.log(res);
                if (res.status !== 0) {
                    return layer.msg(res.message)
                }
                layer.msg('恭喜您，删除图书成功！')
                initArtCateList()
            })
            //关闭弹窗
            layer.close(index);
        });
    })
})